const { Freshman, Sophomore, Junior, Senior } = require('../model/index')
const Grades = [Freshman, Sophomore, Junior, Senior]  // grades 和 Grades 两个数组长度必须相同
const grades = ['freshman', 'sophomore', 'junior', 'senior'] // grades 和 Grades 两个数组长度必须相同

/**
 * 无效的数据接口
 */
function invalidReq (req, res) {
  // console.log(req)
  res.send({
    code: -1,
    msg: '无效的数据接口'
  })
}

/**
 * 用户查询大学学生信息人数统计表
 */
async function getTotalNum (req, res) {
  let data = {
    // 大一
  freshmanBoys: 0,
  freshmanGirls: 0,
  freshmanNum: 0,
  // 大二
  sophomoreBoys: 0,
  sophomoreGirls: 0,
  sophomoreNum: 0,
  // 大三
  juniorBoys: 0,
  juniorGirls: 0,
  juniorNum: 0,
  // 大四
  seniorBoys: 0,
  seniorGirls: 0,
  seniorNum: 0
  }
  
  for (let i = 0; i < grades.length; i++) {
    // 男生
    await Grades[i].find({sex: '男'})
    .then((info) => {
      // console.log(info)
      data[grades[i] + 'Boys'] = info.length
    })
    .catch(() => {
      res.send({
        code: -1,
        msg: '访问数据库时出现错误，请联系数据库管理员'
      })
    })

    // 女生
    await Grades[i].find({sex: '女'})
    .then((info) => {
      // console.log(info)
      data[grades[i] + 'Girls'] = info.length
    })
    .catch(() => {
      res.send({
        code: -1,
        msg: '访问数据库时出现错误，请联系数据库管理员'
      })
    })

    // Total
    await Grades[i].find()
    .then((info) => {
      // console.log(info)
      data[grades[i] + 'Num'] = info.length
      if (i === grades.length - 1) {
        // console.log(data)
        res.send({
          code: 0,
          msg: '大学学生人数信息查询成功',
          data
        })
      }
    })
    .catch(() => {
      res.send({
        code: -1,
        msg: '访问数据库时出现错误，请联系数据库管理员'
      })
    })
  }
}

module.exports = {
  invalidReq,
  getTotalNum
}
